home *** CD-ROM | disk | FTP | other *** search
/ 3D World 76 / 3DWI76.iso / pc / Tutorials.dir / 00019_Script_QuickTime Control Button < prev    next >
Text File  |  2006-02-08  |  6KB  |  190 lines

  1. -- QuickTime CONTROL BUTTON
  2. -- DProvides standard functionality for custom buttons
  3. -- used to control Quicktime video sprites
  4. -- v1 - 14 October   1998 by Darrel Plant
  5. --       3 February  2000 Added isOKToAttach and resolve handlers. Removed 
  6. --                         redundant error checking. Added new mErrorAlert 
  7. --                         handler from James Newton. - Karl Miller
  8.  
  9. on getBehaviorDescription
  10.   return \
  11.     "QT CONTROL BUTTON" & RETURN & RETURN & \
  12.     "Use this behavior to make almost any sprite into a control button for Quicktime video sprites. " & \
  13.     "Standard controls available through this behavior are Play, Stop/Pause, Rewind to beginning, Jump to End, Fast Forward (2x) and Fast backward (2x). " & \
  14.     "Drag behavior onto a sprite, select the Quicktime sprite to control, and which action the button will perform." & RETURN & RETURN & \
  15.     "PARAMETERS:" & RETURN & \
  16.     " - which Quicktime video sprite to control" & RETURN & \
  17.     " - Button action (rewind, stop, play, end, backward, forward)" & RETURN & RETURN & \
  18.     "PERMITTED TYPES:" & RETURN & \
  19.     " - Quicktime video to control" & RETURN & \
  20.     " - any graphics sprite(s) for the controls"
  21. end getBehaviorDescription
  22.  
  23. on getBehaviorTooltip
  24.   return \
  25.     "Create custom QuickTime sprite video control buttons. " & \
  26.     "First place the QuickTime sprite on stage, then attach the behavior to the sprites that will serve as the controls."
  27. end getBehaviorTooltip
  28.  
  29. --PROPERTIES --
  30.  
  31. property pSprite                   -- button sprite reference
  32. property pActive                   -- activity flag for buttons
  33. property alertFlag                 -- set to the ticks when the alert is shown so that
  34.                                    --   the alert doesn't appear twice in succession
  35.  
  36. -- user-defined properties
  37. property pAction                   -- button sprite action
  38. property pVideoSprite              -- video sprite reference
  39.  
  40. -- EVENT HANDLERS --
  41.  
  42. on beginSprite me
  43.   pAction = resolve(pAction)
  44.   mInitialize me
  45. end beginSprite
  46.  
  47. on resolve (prop)
  48.   case prop of
  49.     pAction:
  50.       choicesList = ["Rewind", "Stop", "Play", "End", "Backward", "Forward"]
  51.       lookup = [#rewind, #stop, #play, #end, #backward, #forward]
  52.   end case
  53.   return lookup[findPos(choicesList, prop)]
  54. end resolve
  55.  
  56. on mouseDown me
  57.   mVideoButton me
  58. end mouseDown
  59.  
  60. on mouseUp me
  61.   -- most button actions for the controls occur on mouseDown
  62.   -- but the fast-forward actions are deactivated when the mouse
  63.   -- is released
  64.   case pAction of
  65.     #backward, #forward: mVideoButton me
  66.   end case
  67. end mouseUp
  68.  
  69. on mouseLeave me
  70.   -- test performed in case mouse rolls off of fast
  71.   -- forward/backward button
  72.   case pAction of
  73.     #backward, #forward: mVideoButton me
  74.   end case
  75. end mouseLeave
  76.  
  77. -- CUSTOM HANDLERS --
  78.  
  79. on mInitialize me
  80.   -- set reference for button sprite
  81.   pSprite = sprite (me.spriteNum)
  82.   pActive = FALSE
  83. end mInitialize
  84.  
  85. on mVideoButton me
  86.   -- test to see if sprite is still video
  87.   if mVerifyVideo (pVideoSprite) then
  88.     -- determine button action and act accordingly
  89.     case pAction of
  90.         -- start sprite playing
  91.       #play: 
  92.         sprite (pVideoSprite).movieRate = 1
  93.         -- stop sprite playing
  94.       #stop: 
  95.         sprite (pVideoSprite).movieRate = 0
  96.         -- stop play and rewind sprite to beginning
  97.       #rewind: 
  98.         sprite (pVideoSprite).movieRate = 0
  99.         sprite (pVideoSprite).movieTime = 0
  100.         -- stop play and wind sprite to end of video
  101.       #end: 
  102.         sprite (pVideoSprite).movieRate = 0
  103.         sprite (pVideoSprite).movieTime = \
  104.           sprite (pVideoSprite).member.duration
  105.         -- test mouseDown, if down, play movie backward at
  106.         -- double speed
  107.       #backward:
  108.         if the mouseDown and rollover (me.spriteNum) then
  109.           pActive = TRUE
  110.           sprite (pVideoSprite).movieRate = -2
  111.         else 
  112.           if pActive then sprite (pVideoSprite).movieRate = 0
  113.           pActive = FALSE
  114.         end if
  115.         -- test mouseDown, if down, play movie forward at
  116.         -- double speed
  117.       #forward:
  118.         if the mouseDown and rollover (me.spriteNum) then
  119.           pActive = TRUE
  120.           sprite (pVideoSprite).movieRate = 2
  121.         else 
  122.           if pActive then sprite (pVideoSprite).movieRate = 0
  123.           pActive = FALSE
  124.         end if
  125.     end case
  126.   end if
  127. end mVideoButton
  128.  
  129. on mVerifyVideo vSpriteNum
  130.   -- tests sprite chennel and returns TRUE if sprite uses
  131.   -- Quicktime cast member
  132.   return sprite (vSpriteNum).member.type = #QuickTimeMedia
  133. end mVerifyVideo
  134.  
  135. on mVideoSpriteList
  136.   -- builds list of valid video sprites for property
  137.   -- description list handler
  138.   -- initialize video list
  139.   vVideoList = []
  140.   -- test all channels in movie
  141.   repeat with i = 1 to the lastChannel
  142.     -- test to see if there's a video in the channel
  143.     if mVerifyVideo (i) then
  144.       -- add video channels to list
  145.       add vVideoList, i
  146.     end if
  147.   end repeat
  148.   return vVideoList
  149. end mVideoSpriteList
  150.  
  151. on mErrorAlert me
  152.   if the ticks - alertFlag > 10 then
  153.     alert "No video sprites are currently on the Stage."
  154.     alertFlag = the ticks
  155.   end if
  156. end mErrorAlert
  157.  
  158.  
  159. -- AUTHOR-DEFINED PARAMETERS --
  160.  
  161. on isOKToAttach (me, aSpriteType, aSpriteNum)
  162.   return aSpriteType = #graphic
  163. end isOKToAttach
  164.  
  165.  
  166. on getPropertyDescriptionList me
  167.   if not the currentSpriteNum then
  168.     -- behavior has been attached to script channel
  169.     exit
  170.   end if
  171.   -- build video sprite list
  172.   vVideos = mVideoSpriteList ()
  173.   if not vVideos.count then 
  174.     -- call error regarding no video sprites
  175.     return mErrorAlert (me)
  176.   else
  177.     vPDList = [:]
  178.     setaProp vPDList, #pVideoSprite, [#comment: "Video sprite channel", \
  179.       #format: #string, #default: vVideos[1], #range: vVideos]
  180.     setaProp vPDList, #pAction, \
  181.     [\
  182.     #comment: "Video button action", \
  183.       #format: #string, \
  184.       #default: "Play", \
  185.       #range: ["Rewind", "Stop", "Play", "End", "Backward", "Forward"] \
  186. ]
  187.     return vPDList
  188.   end if
  189. end getPropertyDescriptionList
  190.